package com.yixia.system.mapper.system;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yixia.common.utils.StringUtils;
import com.yixia.system.domain.system.SysLogininfor;
import com.yixia.system.domain.system.SysOperLog;
import org.apache.ibatis.annotations.Mapper;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;


@Mapper
public interface SysLogininforMapper extends BaseMapper<SysLogininfor> {
    default int insertLogininfor(SysLogininfor logininfor){
        int insert = insert(logininfor);
        return insert;
    }


    // 通过mybatis-plus分页查询
    default List<SysLogininfor> selectLogininforList(SysLogininfor logininfor){
        LambdaQueryWrapper<SysLogininfor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
                .eq(StringUtils.isNotEmpty(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
                .like(StringUtils.isNotEmpty(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName());
        queryWrapper.gt(StringUtils.isNotEmpty(logininfor.getBeginTime()), SysLogininfor::getLoginTime, logininfor.getBeginTime())
                .lt(StringUtils.isNotEmpty(logininfor.getEndTime()), SysLogininfor::getLoginTime, logininfor.getEndTime());
        queryWrapper.orderByDesc(SysLogininfor::getInfoId);
        return this.selectList(queryWrapper);
    }

    // 批量删除，根据ID
    default int deleteLogininforByIds(Long[] infoIds){
        if(infoIds.length == 0){
            return 0;
        }
        // 进行删除操作
        LambdaQueryWrapper<SysLogininfor> queryWrapper = new LambdaQueryWrapper<>();
        // 流转换
        List<Long> collect = Arrays.stream(infoIds).collect(Collectors.toList());
        queryWrapper.in(SysLogininfor::getInfoId, collect);
        return this.delete(queryWrapper);
    }

    void cleanLogininfor();
}
